# -*- coding: utf-8 -*-
import os

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

from google.appengine.ext import db
from google.appengine.ext import deferred

from django.utils import simplejson as json

from settings import directory, app_title, _DEBUG, SECRET_KEY

class Page(webapp.RequestHandler):
  """ """
  vk_vars = {}
  
  def is_development_server(self):
    return os.environ['SERVER_SOFTWARE'].startswith('Dev')
  
  def stop_processing(self, *a, **kw):
    pass

  def write_json_response(self, json_v):
    #self.response.headers['Content-Type'] = 'application/json'
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write(json.dumps(json_v))

  def generate(self, template_name, template_values={}):
    values = {
      'request': self.request,
      #'user': users.get_current_user(),
      #'login_url': users.create_login_url(self.request.uri),
      #'logout_url': users.create_logout_url(self.request.uri),
      'application_name': app_title,
      'SECRET_KEY': SECRET_KEY,
      'is_ajax': self.is_ajax(),
     }
    values.update(self.vk_vars)
    values.update(template_values)
    path = os.path.join(directory, os.path.join('templates', template_name))
    self.response.out.write(template.render(path, values, debug=_DEBUG))

  def head(self, *args):
    pass

  def get(self, *args):
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write("You formed GET request\n\n")
    return self.response.out.write(self.request)
  
  def post(self, *args):
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write("You formed POST request\n\n")
    return self.response.out.write(self.request)
  
  def is_ajax(self):
    return self.request.headers.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
  
  def is_secure(self):
    return os.environ.get("HTTPS") == "on"
  
  def api_vars(self):
    """ 
      api_url – это адрес сервиса API, по которому необходимо осуществлять запросы.
      api_id – это id запущенного приложения.
      user_id – это id пользователя, со страницы которого было запущено приложение. 
          Если приложение запущено не со страницы пользователя, то значение равно 0.
      group_id – это id группы, со страницы которой было запущено приложение. Если 
          приложение запущено не со страницы группы, то значение равно 0.
      viewer_id – это id пользователя, который просматривает приложение.
      is_app_user – если пользователь установил приложение – 1, иначе – 0.
      viewer_type – это тип пользователя, который просматривает приложение 
          (возможные значения описаны ниже).
      auth_key – это ключ, необходимый для авторизации пользователя на 
          стороннем сервере (см. описание ниже).
      language – это id языка пользователя, просматривающего приложение 
          (см. список языков ниже).
      api_result – это результат первого API-запроса, который выполняется при 
          загрузке приложения (см. описание ниже).
      api_settings – битовая маска настроек текущего пользователя в данном приложении 
          (подробнее см. в описании метода getUserSettings).    
    """
    vk_api = ['api_url', 'api_id', 
              'user_id', 'group_id', 
              'is_app_user', 'viewer_type', 
              'auth_key', 'language', 
              'api_result', 'api_settings'
              ]
    for key in vk_api:
      if self.request.get(key, None):
        self.vk_vars[key] = self.request.get(key)
        #print key, self.request.get(key)
    self.offset = int(self.request.get('start', 0))
    self.count = int(self.request.get('count', 20))


class NotFoundPageHandler(Page):
  def head(self, *args):
    return self.get(*args)

  def get(self):
    self.error(404)
    self.generate('404.html', )
